function escapefields(str) {
	out = str.replace(/&/gi, '<@#>');
	return out;
}

var tabs = '';
var mask = '';
var curpage='';
var content_tab='';
var properties_tab='';
var tree='';
Ext.onReady(function() {

	// shorthand
	var Tree = Ext.tree;
	
	tree = new Tree.TreePanel({
		//el:'tree-div',
		useArrows: true,
		autoScroll: true,
		height: 465,
		animate: true,
		enableDD: true,
		containerScroll: true,
		dataUrl: 'tree.php',
		rootVisible: false,
		root: {
			nodeType: 'async',
			text: 'Сайт',
			draggable: false,
			id: 'source'
		}
	});


	tabs = new Ext.TabPanel({
		region: 'center',
		margins: '3 3 3 0',
		activeTab: 0,
		width: '100%',
		defaults: {
			autoScroll: true
		},
		items: [{
			id: 't_content',
			title: 'Загрузка',
			html: '<br><br><center>Подождите идёт загрузка..</center>'
		
		}],
		buttons: [{
			text: 'Сохранить',
			disabled: false,
			handler: function() {
				mask.show();
				values = properties_tab.getForm().getValues();
				$.post('../../panel/editproperties.php', 'title=' + escapefields(values['title']) + '&h1=' + escapefields(values['h1']) + '&path=' + curpage + '&keywords=' + escapefields(values['keywords']) + '&description=' + escapefields(values['description']), function(data) {
					}, "text");
				$.post('../../panel/editpage.php', 'path=' + curpage + '&frompath=' + curpage + '&text=' + escapefields(tinyMCE.activeEditor.getContent()), function(data) {
						if (data == 'yes') {
							mask.hide();
						}
						else {
							mask.hide();
							alert(data);
						}
					}, "text");
				
			}
		},{
				text: 'Восстановить',
				handler: function() {
					var store = new Ext.data.SimpleStore({
						fields: [{
							name: 'check'
						}, {
							name: 'date',
							type: 'date',
							dateFormat: 'timestamp'
						}, ]
					});
					
					var grid = new Ext.grid.GridPanel({
						store: store,
						disableSelection: true,
						sm: new Ext.grid.RowSelectionModel({
							singleSelect: true
						}),
						columns: [{
							header: "#",
							width: 40,
							dataIndex: 'check',
							renderer: function(value, p, r) {
								return value;
							},
							sortable: false
						}, {
							header: "Дата",
							width: 120,
							dataIndex: 'date',
							renderer: function(value, p, r) {
								return value.dateFormat('d.m.Y h:i');
							},
							sortable: true
						}],
						width: '100%',
						height: 230
					});
					
					var restore = new Ext.Window({
						title: 'Восстановить бекап',
						width: 200,
						height: 300,
						resizable: false,
						maximizable: false,
						items: grid,
						buttons: [{
							text: 'Восстановить',
							handler: function() {
								var selectionModel = grid.getSelectionModel();
								var record = selectionModel.getSelected();
								if (record) 
									Ext.MessageBox.confirm('Восстановить бекап?', 'Вы уверены, что хотите восстановить бекап сделанный <span style="color:#FF0000;">' + record.get('date').dateFormat('d.m.Y') + '</span> в <span style="color:#FF0000;">' + record.get('date').dateFormat('H:i:s') + '</span>?', function(btnpressed) {
										if (btnpressed == 'yes') {
											mask.show();
											$.post('../../panel/restorebackups.php', 'restore='+record.get('check')+'&path='+curpage, function(data) {
												if (data == 'no') {
													mask.hide();
													Ext.MessageBox.alert('Восстановление', 'Бекап не найден!', function() {});
												}
												else {
													restore.close();
													
													$.post('../../panel/getpage.php', 'path=' + data, function(data) {
														tinyMCE.activeEditor.setContent(data);
														mask.hide();
													});

												}
											}, "text");
										}
									});
								else
									Ext.MessageBox.alert('Восстановление', 'Вы не выбрали бекап для восстановления!', function() {
									});
							},
							style: 'margin:3px auto;'
						}, {
							text: 'Отменить',
							handler: function() {
								restore.close()
							},
							style: 'margin:3px auto;'
						}]
					});
					restore.show();
					mask.show();
					$.post('../../panel/restorebackups.php', 'path=' + curpage, function(data) {
						eval(data);
						store.loadData(backups);
						mask.hide();
					}, "text");
					
				}
			}]
	});
	
	var nav = new Ext.Panel({
		title: 'Страницы:',
		region: 'west',
		split: true,
		width: 200,
		collapsible: false,
		margins: '3 0 3 3',
		cmargins: '3 3 3 3',
		items: tree
	});
	
	//nav.on('expand',function(p){tabs.setWidth(tabs.getInnerWidth()));});
	
	var layout = new Ext.Panel({
		//title    : 'Панель редактирования',
		layout: 'border',
		height: 500,
		items: [nav, tabs]
	}).render(document.body, 'layout');
	
	
	mask = new Ext.LoadMask(tabs.body, {
		msg: "Пожалуйста подождите."
	});
	
	tree.on('movenode', function(tree, node, oldParent, newParent, Number) {
		//alert(node.id+"\n"+oldParent.id+"\n"+newParent.id);
		$.post('filemove.php', {
			node: node.id,
			oldParent: oldParent.id,
			newParent: newParent.id
		}, function(data) {
			node.id = data
		});
	});
	
	tree.on('click', function(node, e) {
		if (node.leaf) {
			//editpage(node.id);
			mask.show();
			$.post('../../panel/editproperties.php', 'path='+node.id, function(data) {
				eval(data);
				properties_tab.getForm().setValues({title:out['title'],h1:out['h1'],keywords:out['keywords'],description:out['description']});
			});
			$.post('../../panel/getpage.php', 'path='+node.id, function(data) {
				content_tab.setTitle('Контент '+node.id.substr(node.id.lastIndexOf('/')+1));
				tinyMCE.activeEditor.setContent(data);
				curpage=node.id;
				mask.hide();
			});
		}
	});
	
	// render the tree
	//tree.render();
	tree.getRootNode().expand();
	
	
	new Ext.Button({
		text: 'В главное меню',
		handler: function () {location.href="../../"},
		style: 'display:inline',
		iconCls: 'back'
	}).render(document.body, 'buttons');
	
	new Ext.Button({
		text: 'Добавить страницу',
		style: 'display:inline; margin-left:10px;',
		handler: addpage,
		iconCls: 'addnews'
	}).render(document.body, 'buttons');
	
	new Ext.Button({
		text: 'Добавить папку',
		style: 'display:inline; margin-left:10px;',
		handler: adddir,
		iconCls: 'folder_add'
	}).render(document.body, 'buttons');
	
	addtabs('/index.php','index.php');
	curpage='/index.php';
	//tinyMCE.activeEditor.setContent('wow');	
});


function addtabs(page,name) {
	mask.show();
	$.post('../../panel/getpage.php', 'path=' + page, function(data) {
		var dlgitems = [{
			xtype: "tinymce",
			width: "100%",
			height: "100%",
			region: 'center',
			tinymceSettings: {
				convert_newlines_to_brs: true,
				force_br_newlines: true,
				force_p_newlines: false,
				forced_root_block: '',
				theme: "advanced",
				skin: "o2k7",
				width: "100%",
				height: "100%",
				plugins: "safari,spellchecker,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,noneditable,visualchars,nonbreaking,xhtmlxtras,template,images",
				theme_advanced_buttons1: "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,outdent,indent,blockquote,undo,redo,|,link,unlink,anchor,images,cleanup,help,code",
				theme_advanced_buttons2: "styleselect,formatselect,fontselect,fontsizeselect,|,forecolor,backcolor",
				theme_advanced_buttons3: "",
				theme_advanced_buttons4: "",
				theme_advanced_toolbar_location: "top",
				theme_advanced_toolbar_align: "left",
				theme_advanced_statusbar_location: "",
				theme_advanced_resizing: false,
				extended_valid_elements: "a[name|href|target|title|onclick],img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name|style],hr[class|width|size|noshade],font[face|size|color|style],span[class|align|style]",
				template_external_list_url: "example_template_list.js",
				language: "ru"
			},
			value: data
		}];
		
		//tabs.remove('t_content', true);
		//tabs.removeAll();
		content_tab=new Ext.Panel({
			title: 'Контент '+name,
			layout: 'border',
			width: '100%',
			items: dlgitems
		});
		
		properties_tab = new Ext.form.FormPanel({
		title: 'Свойства',
		frame: true,
		defaultType: 'textfield',
		items: [{
			fieldLabel: 'Название страницы',
			name: 'title',
			anchor: '100%',
			value: ''
		}, {
			fieldLabel: 'Заголовок страницы',
			name: 'h1',
			anchor: '100%',
			value: ''
		}, {
			fieldLabel: 'Ключевые слова',
			name: 'keywords',
			anchor: '100%',
			value: ''
		}, {
			fieldLabel: 'Описание',
			xtype: 'textarea',
			name: 'description',
			anchor: '100%',
			value: ''
		}]
	});
		tabs.add(content_tab).show();
		tabs.add(properties_tab).show();
		tabs.activate(content_tab);
		
		$.post('../../panel/editproperties.php', 'path='+page, function(data) {
			eval(data);
			properties_tab.getForm().setValues({title:out['title'],h1:out['h1'],keywords:out['keywords'],description:out['description']});
		});
		mask.hide();
		tabs.remove('t_content', true);
			
	});

}

function adddir() {
	var form = new Ext.form.FormPanel({
		baseCls: 'x-plain',
		labelWidth: 155,
		url: 'save-form.php',
		defaultType: 'textfield',
		
		items: [{
			fieldLabel: 'Имя директории',
			name: 'path',
			value: 'directory',
			anchor: '100%' // anchor width by percentage
		}]
	});
	
	var window = new Ext.Window({
		title: 'Создание новой директории',
		width: 500,
		height: 103,
		minWidth: 300,
		minHeight: 103,
		y: (navigator.userAgent.indexOf('Firefox') != -1 ? (scrollY + 250) : (document.body.scrollTop + 250)),
		layout: 'fit',
		plain: true,
		bodyStyle: 'padding:5px;',
		buttonAlign: 'center',
		items: form,
		
		buttons: [{
			text: 'Создать',
			handler: function() {
				values = form.getForm().getValues();
				$.post('../../panel/adddir.php', 'path=' + values['path'], function(data) {
					if (data == 'yes') {
						tree.getLoader().load(tree.getRootNode());
						window.hide();
					}
					else {
						Ext.MessageBox.alert('Ошибка', data)
					}
				}, "text");
				
			}
		}, {
			text: 'Отмена',
			handler: function() {
				window.hide();
			}
		}]
	});
	window.show();
}

function addpage() {
	var form = new Ext.form.FormPanel({
		baseCls: 'x-plain',
		labelWidth: 155,
		url: 'save-form.php',
		defaultType: 'textfield',
		
		items: [{
			fieldLabel: 'Имя страницы',
			name: 'path',
			value: 'pagename.php',
			anchor: '100%' // anchor width by percentage
		}]
	});
	
	var window = new Ext.Window({
		title: 'Создание новой страницы',
		width: 500,
		height: 103,
		minWidth: 300,
		minHeight: 103,
		y: (navigator.userAgent.indexOf('Firefox') != -1 ? (scrollY + 250) : (document.body.scrollTop + 250)),
		layout: 'fit',
		plain: true,
		bodyStyle: 'padding:5px;',
		buttonAlign: 'center',
		items: form,
		
		buttons: [{
			text: 'Создать',
			handler: function() {
				values = form.getForm().getValues();
				$.post('../../panel/addpage.php', 'path=' + values['path'], function(data) {
					if (data == 'yes') {
						tree.getLoader().load(tree.getRootNode());
						window.hide();
					}
					else {
						Ext.MessageBox.alert('Ошибка', data)
					}
				}, "text");
				
			}
		}, {
			text: 'Отмена',
			handler: function() {
				window.hide();
			}
		}]
	});
	window.show();
}
